package top.lshaci.framework.excel.exception;

import cn.hutool.core.util.StrUtil;
import top.lshaci.framework.common.exception.BaseException;
import top.lshaci.framework.excel.enums.ImportHandleErrorInfo;

/**
 * 导入操作异常信息
 *
 * @author lshaci
 * @version 1.0.9
 * @since 1.0.2
 */
public class ImportHandleException extends BaseException {

    private static final long serialVersionUID = 1L;

    /**
     * 根据异常码和异常信息创建一个Excel导入异常
     *
     * @param errorInfo 异常信息
     */
    public ImportHandleException(ImportHandleErrorInfo errorInfo) {
        super(errorInfo);
    }

    /**
     * 根据异常码和异常信息创建一个Excel处理异常
     *
     * @param code 异常码
     * @param msg  异常信息
     */
    public ImportHandleException(int code, String msg) {
        super(code, msg);
    }

    /**
     * 根据 异常码, 异常信息, 异常原因; 创建一个Excel导入异常
     *
     * @param errorInfo 异常信息
     * @param cause 异常原因
     */
    public ImportHandleException(ImportHandleErrorInfo errorInfo, Throwable cause) {
        super(errorInfo, cause);
    }

    /**
     * 根据异常码和异常信息创建一个Excel导入异常
     *
     * @param errorInfo 异常信息
     */
    public static ImportHandleException format(ImportHandleErrorInfo errorInfo, Object...params) {
        return new ImportHandleException(errorInfo.getCode(), StrUtil.format(errorInfo.getMsg(), params));
    }
}
